/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package systole.persistence.brokersInterface;

import java.util.List;
import systole.domain.analysis.results.averages.AverageByDecade;
import systole.domain.analysis.results.averages.AverageByDecadeFemale;
import systole.domain.analysis.results.averages.AverageByDecadeMale;
import systole.domain.analysis.results.averages.Averages;
import systole.domain.persons.Patient;
import systole.exceptions.ExceptionDAO;

/**
 *
 * @author jmj
 */
public interface AveragesBroker {

    /**
     * @return all averages
     * @throws ExceptionDAO
     */
    public Averages getAverages()throws ExceptionDAO;

    /**
     * @return list of female average
     * @throws ExceptionDAO
     */
    public List<AverageByDecadeFemale> getFemaleAverages()throws ExceptionDAO ;

    /**
     * 
     * @return list fo all averages
     * @throws ExceptionDAO
     */
     public List<AverageByDecade> getAllAverages()throws ExceptionDAO;

    /**
     * @return list of male average
     * @throws ExceptionDAO
     */
    public List<AverageByDecadeMale> getMaleAverages()throws ExceptionDAO ;

    /**
     * @param decade
     * @return average by decade
     * @throws ExceptionDAO
     */
    public List<AverageByDecade> getAveragesByDecade(int decade)throws ExceptionDAO ;

    /**
     * @param decade
     * @return average in female decade 
     * @throws ExceptionDAO
     */
    public AverageByDecadeFemale getFemaleAverageByDecade(int decade)throws ExceptionDAO ;

    /**
     * @param decade
     * @return average in male decade 
     * @throws ExceptionDAO
     */
    public AverageByDecadeMale getMaleAverageByDecade(int decade)throws ExceptionDAO ;

    /**
     * @param patient
     * @return average in customer decade 
     * @throws ExceptionDAO
     */
    public AverageByDecade getAverageByPatient(Patient patient) throws ExceptionDAO;

    /**
     *
     * @throws ExceptionDAO
     */
    public void deleteAllAverages() throws ExceptionDAO;

    /**
     *
     * @param averageByDecade
     * @throws ExceptionDAO
     */
    public void save(AverageByDecade averageByDecade) throws ExceptionDAO ;
}
